<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>db_deadlock</title>
    <link rel="stylesheet" href="apiReference.css" type="text/css" />
    <meta name="generator" content="DocBook XSL Stylesheets V1.73.2" />
    <link rel="start" href="index.html" title="Berkeley DB C API Reference" />
    <link rel="up" href="utilities.html" title="Appendix A.  Berkeley DB Command Line Utilities" />
    <link rel="prev" href="db_checkpoint.html" title="db_checkpoint" />
    <link rel="next" href="db_dump.html" title="db_dump" />
  </head>
  <body>
    <div xmlns="" class="navheader">
      <div class="libver">
        <p>Library Version 11.2.5.3</p>
      </div>
      <table width="100%" summary="Navigation header">
        <tr>
          <th colspan="3" align="center">db_deadlock</th>
        </tr>
        <tr>
          <td width="20%" align="left"><a accesskey="p" href="db_checkpoint.html">Prev</a> </td>
          <th width="60%" align="center">Appendix A. 
                Berkeley DB Command Line Utilities
        </th>
          <td width="20%" align="right"> <a accesskey="n" href="db_dump.html">Next</a></td>
        </tr>
      </table>
      <hr />
    </div>
    <div class="sect1" lang="en" xml:lang="en">
      <div class="titlepage">
        <div>
          <div>
            <h2 class="title" style="clear: both"><a id="db_deadlock"></a>db_deadlock</h2>
          </div>
        </div>
      </div>
      <pre class="programlisting">db_deadlock [-Vv]
    [-a e | m | n | o | W | w | y] [-h home] [-L file] [-t sec.usec]  </pre>
      <p>
         The <span class="command"><strong>db_deadlock</strong></span> utility traverses the database environment lock
         region, and aborts a lock request each time it detects a deadlock or a
         lock request that has timed out.  By default, in the case of a
         deadlock, a random lock request is chosen to be aborted.
    </p>
      <p>
         This utility should be run as a background daemon, or the underlying
         Berkeley DB deadlock detection interfaces should be called in some
         other way, whenever there are multiple threads or processes accessing
         a database and at least one of them is modifying it.
    </p>
      <p>
        The options are as follows:
    </p>
      <div class="itemizedlist">
        <ul type="disc">
          <li>
            <p>
              <span class="bold"><strong>-a</strong></span>
            </p>
            <p>
                When a deadlock is detected, abort the locker:
            </p>
            <div class="itemizedlist">
              <ul type="circle">
                <li>
                  <p>
                        <span class="bold"><strong>m</strong></span>
                    </p>
                  <p>
                        with the most locks
                    </p>
                </li>
                <li>
                  <p>
                        <span class="bold"><strong>n</strong></span>
                    </p>
                  <p>
                        with the fewest locks
                    </p>
                </li>
                <li>
                  <p>
                        <span class="bold"><strong>o</strong></span>
                    </p>
                  <p>
                        with the oldest locks
                    </p>
                </li>
                <li>
                  <p>
                        <span class="bold"><strong>W</strong></span>
                    </p>
                  <p>
                        with the most write locks
                    </p>
                </li>
                <li>
                  <p>
                        <span class="bold"><strong>w</strong></span>
                    </p>
                  <p>
                        with the fewest write locks
                    </p>
                </li>
                <li>
                  <p>
                        <span class="bold"><strong>y</strong></span>
                    </p>
                  <p>
                        with the youngest locks
                    </p>
                </li>
                <li>
                  <p>
                        <span class="bold"><strong>e</strong></span>
                    </p>
                  <p>
                        When lock or transaction timeouts have been specified, abort any lock
                        request that has timed out. Note that this option
                        does not perform the entire deadlock detection
                        algorithm, but instead only checks for timeouts.
                    </p>
                </li>
              </ul>
            </div>
          </li>
          <li>
            <p>
                 <span class="bold"><strong>-h</strong></span>
            </p>
            <p>
                 Specify a home directory for the database environment; by default, the
                 current working directory is used.
            </p>
          </li>
          <li>
            <p>
                 <span class="bold"><strong>-L</strong></span>
            </p>
            <p>
                 Log the execution of the <span class="command"><strong>db_deadlock</strong></span> utility to the specified file in
                 the following format, where <span class="emphasis"><em>###</em></span> is the process
                 ID, and the date is the time the utility was started.
            </p>
            <pre class="programlisting">         db_deadlock: ### Wed Jun 15 01:23:45 EDT 1995 </pre>
            <p>
                 This file will be removed if the <span class="command"><strong>db_deadlock</strong></span>
                 utility exits gracefully.
            </p>
          </li>
          <li>
            <p>
                 <span class="bold"><strong>-t</strong></span>
            </p>
            <p>
                 Check the database environment every <span class="bold"><strong>sec</strong></span> seconds plus <span class="bold"><strong>usec</strong></span> microseconds to see if a process has been
                 forced to wait for a lock; if one has, review the database environment
                 lock structures.
            </p>
          </li>
          <li>
            <p>
                 <span class="bold"><strong>-V</strong></span>
            </p>
            <p>
                 Write the library version number to the standard output, and exit.
            </p>
          </li>
          <li>
            <p>
                 <span class="bold"><strong>-v</strong></span>
            </p>
            <p>
                 Run in verbose mode, generating messages each time the detector runs.
            </p>
          </li>
        </ul>
      </div>
      <p>
         If the <span class="bold"><strong>-t</strong></span> option is not specified,
         <span class="command"><strong>db_deadlock</strong></span> will run once and exit.
    </p>
      <p>
         The <span class="command"><strong>db_deadlock</strong></span> utility uses a Berkeley DB environment (as described
         for the <span class="bold"><strong>-h</strong></span> option, the environment
         variable <span class="bold"><strong>DB_HOME</strong></span>, or because the
         utility was run in a directory containing a Berkeley DB environment). 
         In order to avoid environment corruption when using a Berkeley DB
         environment, <span class="command"><strong>db_deadlock</strong></span> should always be given the chance to detach
         from the environment and exit gracefully.  To cause <span class="command"><strong>db_deadlock</strong></span> to
         release all environment resources and exit cleanly, send it an
         interrupt signal (SIGINT).
    </p>
      <p>
         The <span class="command"><strong>db_deadlock</strong></span> utility does not attempt to create the Berkeley DB
         shared memory regions if they do not already exist.  The application
         which creates the region should be started first, and then, once the
         region is created, the <span class="command"><strong>db_deadlock</strong></span> utility should be started.
    </p>
      <p>
         The <a class="xref" href="lockdetect.html" title="DB_ENV-&gt;lock_detect()">DB_ENV-&gt;lock_detect()</a> method
         is the underlying method used by the <span class="command"><strong>db_deadlock</strong></span> utility. See the
         <span class="command"><strong>db_deadlock</strong></span> utility source code for an example of using 
         <code class="methodname">DB_ENV-&gt;lock_detect()</code> in a
         IEEE/ANSI Std 1003.1 (POSIX) environment.
    </p>
      <p>
         The <span class="command"><strong>db_deadlock</strong></span> utility exits 0 on success, and &gt;0 if an error
         occurs.
    </p>
      <div class="sect2" lang="en" xml:lang="en">
        <div class="titlepage">
          <div>
            <div>
              <h3 class="title"><a id="idp55101224"></a>Environment Variables</h3>
            </div>
          </div>
        </div>
        <div class="sect3" lang="en" xml:lang="en">
          <div class="titlepage">
            <div>
              <div>
                <h4 class="title"><a id="idp55101416"></a>DB_HOME</h4>
              </div>
            </div>
          </div>
          <p>
                          If the <span class="bold"><strong>-h</strong></span> option is not specified and
                          the environment variable DB_HOME is set, it is used as the path of the
                          database home, as described in the
                          <a class="xref" href="envopen.html" title="DB_ENV-&gt;open()">DB_ENV-&gt;open()</a> method.
                     </p>
        </div>
      </div>
    </div>
    <div class="navfooter">
      <hr />
      <table width="100%" summary="Navigation footer">
        <tr>
          <td width="40%" align="left"><a accesskey="p" href="db_checkpoint.html">Prev</a> </td>
          <td width="20%" align="center">
            <a accesskey="u" href="utilities.html">Up</a>
          </td>
          <td width="40%" align="right"> <a accesskey="n" href="db_dump.html">Next</a></td>
        </tr>
        <tr>
          <td width="40%" align="left" valign="top">db_checkpoint </td>
          <td width="20%" align="center">
            <a accesskey="h" href="index.html">Home</a>
          </td>
          <td width="40%" align="right" valign="top"> db_dump</td>
        </tr>
      </table>
    </div>
  </body>
</html>
